7
תגובות

שאלה לגבי views ב codeigniter

פתח nirbe ,
שלום,
אני בונה עכשיו סוג של פורום. עכשיו חשבתי שלכל הודעה בנושא מסוים אני אקשר ל VIEW.
הכוונה שלי שבמקום להתחיל לעשות את כל ה html באותו ה view, פשוט להריץ לולאה על כל ההודעות באותו הנושא ולכל הודעה לקשר view (שבו נמצא כל ה HTML של הצגת ההודעה) this->load->view.
האם זה נכון לעשות ככה? וזה לא יאט לי את המערכת? או שעדיף לעשות את כל ה HTML באותו ה VIEW ולא להתחיל לקשר views אחרים.

הנה קוד לדוגמא שיהיה לכם יותר קל להבין:

foreach($posts as $id => $post)
{
 $this->load->view("post", array("post" => $post));
}

7 תשובות

avatar ענה Splash ב 18 לאוקטובר 2014 #

למה אתה לא עושה ב view עצמו את התנאי של ה foreach ואז בעצם לשלוח אליו רק את ה posts ?

avatar ענה yonikal56 ב 18 לאוקטובר 2014 #

למה לא להשתמש בparser?
אתה יכול לעשות בקלות foreach מבלי לכתוב foreach, נפלאות codeigniter.

avatar ענה intval ב 19 לאוקטובר 2014 #

לדעתי עדיף שתעשה וויו אחד של עמוד ההודעות ותעביר לתוכו מערכך של הודעות ובפנים תעשה לולאה שעושה מה שאתה רוצה.
(כרגיל, כמו שספלאש אמר)

avatar ענה nirbe ב 20 לאוקטובר 2014 #

הרעיון הוא בשביל לסדר לעצמי הכל בקבצים נפרדים שיהיה לי יותר נוח.
ככה שאני לא אצטרך להתחיל לגלול את הקוד שלי, אלא ישר לפתוח את הקובץ היעודי לפוסטים.
האם זה מאט את האתר? או שאין הבדל בין לכתוב את קוד ה HTML באותו עמוד לבין מה שעשיתי?
בנוגע למה שספלאש אמר, ה foreach נמצא ב view.

avatar ענה ldbrgr ב 20 לאוקטובר 2014 #

מבחינת ביצועים זה לוקח קצת יותר משאבים, לא משהו שתרגיש.

זה כמו include במקום echo ..

במקום:

<?php foreach($posts as $post): ?>

<div class="post">
  <h1><?php echo $post->title; ?></h1>
  <p><?php echo $post->body; ?></p>
</div>

<?php endforeach; ?>


אז:

<?php foreach($posts as $post): ?>

<?php include('views/posts/widget.php'); ?>

<?php endforeach; ?>


התוכן בקובץ views/posts/widget.php:
<div class="post">
  <h1><?php echo $post->title; ?></h1>
  <p><?php echo $post->body; ?></p>
</div>


לא קריטי מבחינת ביצועים..

avatar ענה nirbe ב 20 לאוקטובר 2014 #

סבבה הבנתי, תודה לכם!
עוד שאלה, מה הפונקציה שבודקת תוך כמה זמן העמוד עלה? אולי ככה אני אוכל לבדוק פחות או יותר מה ההבדל מבחינת ביצועים.

avatar ענה Splash ב 21 לאוקטובר 2014 #

הלולאה בתוך ה view תעבוד מהר יותר משום שברגע שאתה עושה לולאה מבחוץ הוא כל פעם יפתח את ה view מחדש ויכניס את הנתונים לתוכו,מאוד מיותר.

לגבי זמני ריצה אין לזה פונקציה,הדרך המקובלת היא להשתמש ב time בתחילת הסקריפט ועוד פעם time בסופו אבל מאחר ומדובר במספר פעולות זניח יחסית קשה לי להאמין שתרגיש הבדל על מנת לקבל את הנתונים כמה שיותר מהימנים תתקין xdebug ותשווה זמני ריצה של לפחות 1000 הרצות שונות בכל אחד מהסקריפטים
בנוסף אתה יכול להסתכל על מה שקורה "מאחורי הקלעים".